#include<iostream>
#include<vector>
#include<queue>
#include<cstring>
#include<cmath>
#include<map>
#include<set>
#include<cstdio>
#include<algorithm>
#define debug(a) cout<<#a<<"="<<a<<endl;
using namespace std;
const int maxn=5;
typedef long long LL;
typedef pair<LL,LL>P;
inline LL read(){LL x=0,f=1;char ch=getchar();	while (!isdigit(ch)){if (ch=='-') f=-1;ch=getchar();}while (isdigit(ch)){x=x*10+ch-48;ch=getchar();}
return x*f;}
LL a[maxn][maxn],n=4;
vector<P>ans;
bool check(){
     for(int i=1;i<=4;i++){
         bool flag=true;
         for(int j=1;j<=4;j++){
            if(!a[i][j]) flag=false;
         }
         if(flag){
            for(int j=1;j<=4;j++) a[i][j]=0;
         }
     }
     for(int j=1;j<=4;j++){
         bool flag=true;
         for(int i=1;i<=4;i++){
            if(!a[i][j]) flag=false;
         }
         if(flag){
            for(int i=1;i<=4;i++) a[i][j]=0;
         }
     }
}
void ins(char op){
     if(op=='1'){
        for(int i=1;i<=n;i++){
            for(int j=1;j+1<=n;j++){
                if(!a[i][j]&&!a[i][j+1]){
                    a[i][j]=a[i][j+1]=1;
                    ans.push_back({i,j});
                    goto ED;
                }
            }
        }
        ED:{}
     }
     else{
        for(int j=1;j<=n;j++){
            for(int i=1;i+1<=n;i++){
                if(!a[i][j]&&!a[i+1][j]){
                    a[i][j]=a[i+1][j]=1;
                    ans.push_back({i,j});
                    goto ED2;
                }
            }
        }
        ED2:{}
     }
}
int main(void){
   	cin.tie(0);std::ios::sync_with_stdio(false);
    string s;cin>>s;
    for(int i=0;i<s.size();i++){
        ins(s[i]);
        check();
    }
    for(auto i:ans){
        cout<<i.first<<" "<<i.second<<endl;
    }
   	return 0;
}
